/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package com.app2.vista.management;

import com.app2.ejbs.FuncionarioFacade;
import com.app2.entidades.Funcionario;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.view.ViewScoped;
import javax.inject.Named;
import org.primefaces.context.RequestContext;

/**
 *
 * @author Diana Vasquez
 */

@Named(value = "funcionarioController")
@ViewScoped
public class FuncionarioController {
    
    
    /**
     * Creates a new instance of FuncionarioController
     */
    @EJB
    FuncionarioFacade funcionarioFacade;
    private List<Funcionario> listaFuncionarios;
    private Funcionario funcionario;
    private Funcionario funcionarioSeleccionado;

    public List<Funcionario> getListaFuncionarios() {
        if (listaFuncionarios == null) {
            listaFuncionarios = new ArrayList<>();
            listaFuncionarios = funcionarioFacade.findAll();
        }
        return listaFuncionarios;
    }

    @PostConstruct
    public void initialize() {
        this.getListaFuncionarios();
    }

    public void initializeFuncionario() {
        this.funcionario = new Funcionario();
    }

    public boolean validarExistente() {
        Funcionario encontrado;
        encontrado = funcionarioFacade.find(this.funcionario.getIdFuncionario());
        return encontrado != null;
    }

    public void crearFuncionario(ActionEvent actionEvent) throws SQLException {
        boolean Existe;
        Existe = validarExistente();

        if (Existe == false) {
            System.out.println(this.funcionario.getIdFuncionario());
            funcionarioFacade.create(funcionario);
            listaFuncionarios.add(funcionario);
            FacesContext.getCurrentInstance().addMessage(null,
                    new FacesMessage(FacesMessage.SEVERITY_INFO, "El usuario ha sido creado", "Creado exitosamente"));
            RequestContext.getCurrentInstance().addCallbackParam("loggedIn", true);
        } else {
            FacesContext.getCurrentInstance().addMessage(null,
                    new FacesMessage(FacesMessage.SEVERITY_ERROR, "El id de usuario ya existe", "Usuario ya existe"));
            RequestContext.getCurrentInstance().addCallbackParam("loggedIn", false);
        }

    }

    public void eliminarFuncionario(ActionEvent actionEvent) {
        funcionarioFacade.remove(funcionarioSeleccionado);
        listaFuncionarios = new ArrayList<>(funcionarioFacade.findAll());
    }

    public Funcionario getFuncionario() {
        return funcionario;
    }

    public void setFuncionario(Funcionario funcionario) {
        this.funcionario = funcionario;
    }

    public Funcionario getFuncionarioSeleccionado() {
        return funcionarioSeleccionado;
    }

    public void setFuncionarioSeleccionado(Funcionario funcionarioSeleccionado) {
        this.funcionarioSeleccionado = funcionarioSeleccionado;
    }

    public FuncionarioController() {

    }
    
}
